import ollama

# 1. 候选意图
INTENT_LABELS = ["查询天气", "播放音乐", "设置闹钟", "闲聊", "未知"]

# 2. Zero-shot 提示模板(prompt里无示例)
PROMPT_TEMPLATE = f"""你是一名意图识别引擎，请根据用户输入从以下候选列表中返回唯一最匹配的意图，以json输出意图。
候选意图：{' | '.join(INTENT_LABELS)}

用户说：{{sentence}}"""


# 3. 推理函数
def predict_intent(sentence: str) -> str:
    prompt = PROMPT_TEMPLATE.format(sentence=sentence)
    # temperature=0 确保输出稳定
    resp = ollama.generate(model="qwen2.5:1.5b", prompt=prompt, options={"temperature": 0})
    return resp["response"].strip()


# 4. 交互测试
if __name__ == "__main__":
    while True:
        text = input("【用户】>>> ")
        if text.lower() in {"q", "quit"}:
            break
        print("【意图】", predict_intent(text))
